// 校验字段
/**
 * 校验对象字段的公共方法
 * @param {Object} obj - 要校验的对象
 * @param {Object} rules - 校验规则，键为字段名，值为校验函数或函数数组
 * @returns {Array} - 校验结果数组，每个元素包含字段名和错误信息
 */
export function validateFields(obj, rules) {
    const errors = [];

    for (const [field, ruleOrRules] of Object.entries(rules)) {
        const rulesArray = Array.isArray(ruleOrRules) ? ruleOrRules : [ruleOrRules];

        for (const rule of rulesArray) {
            const result = rule(obj[field], field, obj);
            if (result) {
                errors.push({ field, message: result });
            }
        }
    }

    return errors;
}


export function required(value, fieldName) {
    if (value === undefined || value === null || value === '' || !value.length) {
        return `${fieldName} 是必填字段`;
    }
    return null;
}



export function isEmail(value, fieldName) {
    const emailPattern = /^[^\s@]+@[^\s@]+\.[^\s@]+$/;
    if (value && !emailPattern.test(value)) {
        return `${fieldName} 必须是一个有效的电子邮件地址`;
    }
    return null;
}

// 使用示例
// const user = {
//     name: '',
//     email: 'invalid-email',
//     age: 25
// };

// const rules = {
//     name: [required, minLength(2)],
//     email: [required, isEmail],
//     age: [minLength(2)] // 这里只是举个例子，年龄可能是数字类型，可能需要不同的校验规则
// };
// const validationErrors = validateFields(user, rules);
// if (validationErrors.length > 0) {
//     console.log('校验失败:', validationErrors);
// } else {
//     console.log('校验成功');
// }
